package com.tarena.test.luban.demo.cart;

import com.tarena.demo.luban.all.main.rpc.DubboTestRpcApiImpl;
import com.tarena.luban.demo.cart.api.DubboTestRpcApi;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;

/**
 * 开启一个dubbo底层的客户端进程
 * 监听端口 等待访问调用
 */
public class DubboProvider {
    public static void main(String[] args) {
        //配置信息类 那些接口 需要实现类访问 ,实现类是谁  注册中心是谁
        ServiceConfig<DubboTestRpcApi> providerService=new ServiceConfig<>();
        // 注明当前服务 对外暴露的具体接口
        providerService.setInterface(DubboTestRpcApi.class);
        // 真正实现 是谁 new DubboTestRpcApi()
        providerService.setRef(new DubboTestRpcApiImpl());
        //创建一个 dubbo-provider 进程对象
        DubboBootstrap provider = DubboBootstrap.getInstance();
        //provider进程对象中填写具体属性
        //dubbo应用名称 必填,可以和spring.application.name复用
        provider.application("cart-provider");
        //注册中心
        provider.registry(new RegistryConfig("nacos://localhost:8848"));
        //RegistryConfig registryConfig=new RegistryConfig();
        /*RegistryConfig registryConfig=new RegistryConfig();
        registryConfig.setAddress();
        registryConfig.setParameters("namespace","123456");*/
        //本地服务端进程 监听端口
        provider.protocol(new ProtocolConfig("dubbo",20990));
        //提供的服务
        provider.service(providerService);
        //启动等待
        provider.start().await();
    }
}
